﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CreditCalc
{
    class Program
    {
        static uint ReadUintFromConsole()
        {
            try
            {
                return (uint.Parse(Console.ReadLine()));
            }
            catch
            {
                Console.WriteLine("Input error");
                return ReadUintFromConsole();
            }
        }
        static DateTime ReadDateFromConsole()
        {
            DateTime dt;
            string s=Console.ReadLine();
            if(DateTime.TryParse(s, out dt))
            {
                return dt;
            }
            else
            {
                Console.WriteLine("Input error");
                return ReadDateFromConsole();
            }
        }        
        static void PrintPayDays(DateTime dt, int num, int sum, int yearProc)
        {                      
            int count = 0;
            int payCred = sum / num;            
            while (count < num)
            {
                int payBank = sum * yearProc /100 /12;
                int payMonth = payCred + payBank;
                sum = sum - payCred;
                count++;                
                dt = dt.AddMonths(1);
                DateTime dt1 = dt;
                if (dt.DayOfWeek == DayOfWeek.Saturday)
                {
                    dt1 = dt.AddDays(-1);
                }
                else if (dt.DayOfWeek == DayOfWeek.Sunday)
                {
                    dt1 = dt.AddDays(-2);
                }
                Console.Write("Платеж {0}: ",count.ToString("000"));
                Console.Write(" {0}  {1}", dt1.ToString("yyyy.MM.dd"), dt1.ToString("ddd"));
                Console.WriteLine("  Сумма платежа: {0} грн.", payMonth);
            }
        }
        static void Main()
        {
            Console.WriteLine("Данная программа распечатает кредитный календарь ");
            Console.WriteLine("");
            Console.Write("Введите дату получения кредита: ");
            DateTime dt = ReadDateFromConsole();
            Console.Write("Введите количество платежей: ");
            int num = (int)ReadUintFromConsole();
            Console.Write("Введите сумму кредита, грн.: ");
            int sum = (int)ReadUintFromConsole();
            Console.Write("Введите годовой процент, %: ");
            int yearProc = (int)ReadUintFromConsole();
            Console.WriteLine("-----------------------------------------------------");
            PrintPayDays(dt, num, sum, yearProc); 
            Console.ReadKey();
        }
    }
}
